package com.shop.cereshop.app.domain.notice;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

/**
 * 系统通知表
 */
@ApiModel(description="系统通知表")
@Data
public class SystemNotice implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value="主键ID")
    @NotNull(message = "主键ID不能为null")
    private Long id;

    @ApiModelProperty(value="通知标题，如：系统公告、平台咨询")
    @Size(max = 100,message = "通知标题，如：系统公告、平台咨询最大长度要小于 100")
    @NotBlank(message = "通知标题，如：系统公告、平台咨询不能为空")
    private String title;

    @ApiModelProperty(value="消息类型：1-系统公告 2-平台咨询 3-用户通知")
    @NotNull(message = "消息类型不能为null")
    private Integer type;

    @ApiModelProperty(value="接收范围：1-全体用户 2-指定用户列表")
    @NotNull(message = "接收范围不能为null")
    private Integer targetType;

    @ApiModelProperty(value="通知内容")
    @NotBlank(message = "通知内容不能为空")
    private String content;

    @ApiModelProperty(value="图标标识，如：bell, chat, etc.")
    @Size(max = 50,message = "图标标识，如：bell, chat, etc.最大长度要小于 50")
    private String icon;

    @ApiModelProperty(value="创建时间")
    private LocalDateTime createdAt;

    @ApiModelProperty(value="更新时间")
    private LocalDateTime updatedAt;

    @ApiModelProperty(value="状态：1-正常 2-归档")
    private Integer status;

    @ApiModelProperty(value="优先级：1-低 2-中 3-高")
    private Integer priority;

    @ApiModelProperty(value="跳转链接，如App下载页")
    @Size(max = 500,message = "跳转链接，如App下载页最大长度要小于 500")
    private String externalLink;

    @ApiModelProperty(value="过期时间，用于自动清理")
    private LocalDateTime expireAt;


}